﻿using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Net;
using System.Text.RegularExpressions;

namespace BlogsAPI.Abstract
{
    using System;

    /// <summary>
    /// Абстрактный класс, от которого наследуются все классы работающие с системами работы с картинками
    /// </summary>
    public abstract class ImageServer : WebInterface
    {
        /// <summary>
        /// Идентификатор пользователя, разместившего картинку
        /// </summary>
        public string UserID;

        /// <summary>
        /// Идентификатор пользователя, разместившего картинку
        /// </summary>
        public string UserName;

        /// <summary>
        /// Идентификатор одной картинки
        /// </summary>
        public string MediaID;

        /// <summary>
        /// Ширина последней картинки
        /// </summary>
        public string Width;

        /// <summary>
        /// Заголовок картинки
        /// </summary>
        public string Title;

        /// <summary>
        /// Высота последней картинки
        /// </summary>
        public string Height;

        #region Main Functionality

        /// <summary>
        /// проверка, является ли передаваемый урл чатью этого сервиса
        /// </summary>
        public virtual Boolean ValidateLink(String sLink)
        {
            if(!String.IsNullOrEmpty(sLink))
            {
                //Берем параметр из свойс типа, если есть
                object[] attributes = GetType().GetCustomAttributes(typeof(SingleImager), false);
                if (attributes.Length > 0)
                {
                    if (attributes.Any(attribute => sLink.ToLower().Contains(((SingleImager)attribute).Link)))
                    {
                        return true;
                    }
                }
            }
            return false;
        }

        /// <summary>
        /// Получение превьюшки
        /// </summary>
        /// <param name="sLink">Ссылка на картинку в большом формате</param>
        /// <returns>Ссылка на картинку в малом формате</returns>
        public abstract String GetThumb(String sLink);

        #endregion
    }
}
